// manifest.config.ts
import path from 'node:path';

import { defineManifestConfig } from '@uni-helper/vite-plugin-uni-manifest';
import { loadEnv } from 'vite';

// 获取环境变量的范例
const env = loadEnv(process.env.NODE_ENV!, path.resolve(process.cwd(), 'env'));
const {
  VITE_APP_TITLE,
  VITE_APP_DESC,
  VITE_UNI_APPID,
  VITE_ANDROID_APPID,
  VITE_IOS_APPID,
  VITE_WX_APPID,
  VITE_WEB_PUBLIC_BASE,
  // VITE_LOCALE,
  VITE_FALLBACK_LOCALE,
} = env;

export default defineManifestConfig({
  name: VITE_APP_TITLE,
  appid: VITE_UNI_APPID,
  description: VITE_APP_DESC,
  versionName: '1.0.0',
  versionCode: '100',
  // transformPx: false,
  developer: {
    name: 'SeonHu',
    email: 'SeonHu@126.com',
    url: '',
  },
  networkTimeout: {
    request: 21600 * 1000, // 360分钟
    connectSocket: 21600 * 1000, // 360分钟
    uploadFile: 21600 * 1000, // 360分钟
    downloadFile: 21600 * 1000, // 360分钟
  },
  // locale: VITE_LOCALE, // 'zh-Hans'  默认为auto，跟随系统OS的语言。
  fallbackLocale: VITE_FALLBACK_LOCALE, // 'zh-Hans'
  h5: {
    router: {
      base: VITE_WEB_PUBLIC_BASE,
    },
    darkmode: true, // 暗黑模式
    themeLocation: 'theme.json', // 如果 theme.json 在根目录可省略
    styleIsolation: 'shared',
  },
  /* 5+App特有相关 */
  'app-plus': {
    usingComponents: true,
    nvueStyleCompiler: 'uni-app',
    compilerVersion: 3,
    compatible: {
      ignoreVersion: true,
    },
    splashscreen: {
      alwaysShowBeforeRender: true,
      waiting: true,
      autoclose: true,
      // delay: 0,
    },
    /* 模块配置 */
    modules: {
      Barcode: {},
      Bluetooth: {},
      Camera: {},
      iBeacon: {},
      // LivePusher: {},
      Payment: {},
      Push: {},
      VideoPlayer: {},
      // SQLite: {},
      Contacts: {},
      FaceID: {},
      Fingerprint: {},
      Record: {},
      Geolocation: {},
    },
    /* 应用发布信息 */
    distribute: {
      /* android打包配置 */
      android: {
        packagename: VITE_ANDROID_APPID,
        minSdkVersion: 21,
        targetSdkVersion: 30,
        abiFilters: ['armeabi-v7a', 'arm64-v8a'],
        permissions: [
          // 位置
          '<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />',
          '<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />',
          '<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />',
          // 网络
          '<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />',
          '<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />',
          '<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>',
          '<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />',
          '<uses-permission android:name="android.permission.INTERNET" />',
          // 手机状态
          '<uses-permission android:name="android.permission.READ_PHONE_STATE" />',
          // 日志
          '<uses-permission android:name="android.permission.READ_LOGS"/>',
          // 外部存储
          '<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>',
          '<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />',
          // 允许应用程序挂载或卸载文件系统
          '<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />',
          // 允许应用程序修改系统设置
          '<uses-permission android:name="android.permission.WRITE_SETTINGS"/>',
          // 允许应用在设备启动完成后接收一个BOOT_COMPLETED广播‌
          '<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />',
          // 广播包移除类权限
          '<uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED" />',
          // 允许应用震动
          '<uses-permission android:name="android.permission.VIBRATE" />',
          // 允许程序重新启动设备
          '<uses-permission android:name="android.permission.RESTART_PACKAGES" />',
          // 允许应用程序获取有关系统中运行的任务信息
          '<uses-permission android:name="android.permission.GET_TASKS" />',
          // Bluetooth(低功耗蓝牙)
          '<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />',
          '<uses-permission android:name="android.permission.BLUETOOTH" />',
          '<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />',
          '<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"/>',
          // Contact(通讯录)
          '<uses-permission android:name="android.permission.GET_ACCOUNTS"/>',
          '<uses-permission android:name="android.permission.WRITE_CONTACTS"/>',
          '<uses-permission android:name="android.permission.READ_CONTACTS"/>',
          // Fingerprint(指纹识别)
          '<uses-permission android:name="android.permission.USE_FINGERPRINT"/>',
          // Messaging(短彩邮件消息)
          '<uses-permission android:name="android.permission.RECEIVE_SMS"/>',
          '<uses-permission android:name="android.permission.SEND_SMS"/>',
          '<uses-permission android:name="android.permission.READ_SMS"/>',
          // 允许应用程序修改系统的音频设置
          '<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>',
          // ‌录制音频
          '<uses-permission android:name="android.permission.RECORD_AUDIO" />',
          // 摄像头
          '<uses-feature android:name="android.hardware.camera"/>',
          '<uses-feature android:name="android.hardware.camera.autofocus"/>',
          '<uses-permission android:name="android.permission.CAMERA"/>',
          '<uses-permission android:name="android.permission.FLASHLIGHT"/>', // 控制设备的闪光灯
          // 控制设备的NFC
          '<uses-permission android:name="android.permission.NFC"/>',
          // 控制设备的唤醒状态，允许应用程序绕过系统的电源管理策略，保持CPU和屏幕的唤醒状态。
          '<uses-permission android:name="android.permission.WAKE_LOCK"/>',
          // 日历信息权限
          '<uses-permission android:name="android.permission.READ_CALENDAR" />',
          '<uses-permission android:name="android.permission.WRITE_CALENDAR" />',
          // 允许应用程序请求用户授予安装未知来源应用的权限
          '<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>', // 某些市场会检测该权限，若上架应用市场，建议注释。
          // 允许应用程序请求用户授予安装未知来源应用的权限
          '<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>', // 某些市场会检测该权限，若上架应用市场，建议注释。
        ],
        defaultNightMode: 'auto', // 'light' | 'dark' | 'auto' HBuilderX 3.6.10及以上版本支持
      },
      /* ios打包配置 */
      ios: {
        appid: VITE_IOS_APPID,
        privacyDescription: {
          NSBluetoothPeripheralUsageDescription: '是否允许使用蓝牙',
          NSBluetoothAlwaysUsageDescription: '是否允许使用蓝牙',
          NSPhotoLibraryUsageDescription: '是否允许读取相册',
          NSPhotoLibraryAddUsageDescription: '是否允许写入相册',
          NSCameraUsageDescription: '是否允许使用摄像头',
          NSMicrophoneUsageDescription: '是否允许使用麦克风',
          NSLocationWhenInUseUsageDescription: '是否允许访问位置',
          NSLocationAlwaysUsageDescription: '是否允许访问位置',
          NSLocationAlwaysAndWhenInUseUsageDescription: '是否允许访问位置',
          NSAppleMusicUsageDescription: '是否允许使用媒体资料库',
          NFCReaderUsageDescription: '是否允许使用NFC',
          NSLocalNetworkUsageDescription: '是否允许访问本地网络',
          NSCalendarsUsageDescription: '是否允许访问日历创建和管理日程事件',
          NSContactsUsageDescription: '是否允许使用通讯录',
          NSSpeechRecognitionUsageDescription: '是否允许使用系统语音识别',
          NSRemindersUsageDescription: '是否允许使用系统提醒事项',
          NSSiriUsageDescription: '是否允许访问 Siri',
          NSFaceIDUsageDescription: '是否允许使用 FaceID',
        },
        // UIUserInterfaceStyle: 'Automatic', // 不推荐使用，设置light或dark后将无法跟随系统
        defaultTheme: 'auto', // 'light' | 'dark' | 'auto' HBuilderX 3.6.10及以上版本支持
        idfa: false,
      },
      /* SDK配置 */
      sdkConfigs: {
        push: {
          unipush: {
            version: '2',
            offline: true,
            // hms: {},
            // oppo: {},
            // vivo: {},
            // mi: {},
            // meizu: {},
            // honor: {},
            icons: {
              small: {
                ldpi: 'static/images/app/20x20.png',
                mdpi: 'static/images/app/29x29.png',
                hdpi: 'static/images/app/40x40.png',
                xhdpi: 'static/images/app/58x58.png',
                xxhdpi: 'static/images/app/72x72.png',
              },
            },
          },
        },
        ad: {},
        payment: {
          alipay: {
            __platform__: ['ios', 'android'],
          },
          weixin: {
            __platform__: ['ios', 'android'],
            appid: 'wechatAppId',
            UniversalLinks: undefined,
          },
        },
        share: {},
        /** 语音输入 */
        speech: {},
        geolocation: {
          system: {
            __platform__: ['ios', 'android'],
          },
        },
      },
      /* 图标配置 */
      icons: {
        android: {
          hdpi: 'static/images/app/72x72.png',
          xhdpi: 'static/images/app/96x96.png',
          xxhdpi: 'static/images/app/144x144.png',
          xxxhdpi: 'static/images/app/192x192.png',
        },
        ios: {
          appstore: 'static/images/app/1024x1024.png',
          ipad: {
            app: 'static/images/app/76x76.png',
            'app@2x': 'static/images/app/152x152.png',
            notification: 'static/images/app/20x20.png',
            'notification@2x': 'static/images/app/40x40.png',
            'proapp@2x': 'static/images/app/167x167.png',
            settings: 'static/images/app/29x29.png',
            'settings@2x': 'static/images/app/58x58.png',
            spotlight: 'static/images/app/40x40.png',
            'spotlight@2x': 'static/images/app/80x80.png',
          },
          iphone: {
            'app@2x': 'static/images/app/120x120.png',
            'app@3x': 'static/images/app/180x180.png',
            'notification@2x': 'static/images/app/40x40.png',
            'notification@3x': 'static/images/app/60x60.png',
            'settings@2x': 'static/images/app/58x58.png',
            'settings@3x': 'static/images/app/87x87.png',
            'spotlight@2x': 'static/images/app/80x80.png',
            'spotlight@3x': 'static/images/app/120x120.png',
          },
        },
      },
    },
    locales: {
      en: {
        name: 'Ea App', // 应用名称
        description: 'EaCloud Mobile Development Framework', // 应用描述
        android: {
          strings: {
            // Android平台自定义字符串
            CustomKey: 'CustomValue',
            // ...
          },
        },
        ios: {
          privacyDescription: {
            // iOS平台隐私访问描述信息
            NSBluetoothPeripheralUsageDescription: 'Is Bluetooth allowed?',
            NSBluetoothAlwaysUsageDescription: 'Is Bluetooth allowed?',
            NSPhotoLibraryUsageDescription: 'Is it allowed to read the album?',
            NSPhotoLibraryAddUsageDescription: 'Do you allow writing to the album?',
            NSCameraUsageDescription: 'Is the use of cameras allowed?',
            NSMicrophoneUsageDescription: 'Is it allowed to use a microphone?',
            NSLocationWhenInUseUsageDescription: 'Do you allow access to the location?',
            NSLocationAlwaysUsageDescription: 'Do you allow access to the location?',
            NSLocationAlwaysAndWhenInUseUsageDescription: 'Do you allow access to the location?',
            NSAppleMusicUsageDescription: 'Is it allowed to use media databases?',
            NFCReaderUsageDescription: 'Is NFC allowed to be used?',
            NSLocalNetworkUsageDescription: 'Do you allow access to the local network?',
            NSCalendarsUsageDescription:
              'Allow access to calendar creation and management of schedule events?',
            NSContactsUsageDescription: 'Is it allowed to use the address book?',
            NSSpeechRecognitionUsageDescription: 'Is it allowed to use system speech recognition?',
            NSRemindersUsageDescription: 'Is it allowed to use system reminders?',
            NSSiriUsageDescription: 'Do you allow access to Siri?',
            NSFaceIDUsageDescription: 'Do you allow the use of FaceID?',
          },
          infoPlist: {
            // iOS平台自定义InfoPlist.strings
            CustomKey: 'CustomValue',
            // ...
          },
        },
      },
      ja: {
        name: '易雲フレームワーク', // 应用名称
        description: '易雲モバイル端末開発フレームワーク', // 应用描述
        android: {
          strings: {
            // Android平台自定义字符串
            CustomKey: 'CustomValue',
            // ...
          },
        },
        ios: {
          privacyDescription: {
            // iOS平台隐私访问描述信息
            NSBluetoothPeripheralUsageDescription: 'Bluetoothの使用は許可されていますか？',
            NSBluetoothAlwaysUsageDescription: 'Bluetoothの使用は許可されていますか？',
            NSPhotoLibraryUsageDescription: 'アルバムの読み取りを許可しますか？',
            NSPhotoLibraryAddUsageDescription: 'アルバムの書き込みを許可しますか？',
            NSCameraUsageDescription: 'カメラの使用は許可されていますか？',
            NSMicrophoneUsageDescription: 'マイクの使用は許可されていますか？',
            NSLocationWhenInUseUsageDescription: '場所へのアクセスを許可しますか？',
            NSLocationAlwaysUsageDescription: '場所へのアクセスを許可しますか？',
            NSLocationAlwaysAndWhenInUseUsageDescription: '場所へのアクセスを許可しますか？',
            NSAppleMusicUsageDescription: 'メディアリポジトリの使用を許可しますか？',
            NFCReaderUsageDescription: 'NFCの使用を許可しますか？',
            NSLocalNetworkUsageDescription: 'ローカルネットワークへのアクセスを許可しますか？',
            NSCalendarsUsageDescription:
              'カレンダー作成および管理スケジュールイベントへのアクセスを許可するかどうか？',
            NSContactsUsageDescription: 'アドレス帳の使用を許可しますか？',
            NSSpeechRecognitionUsageDescription: 'システム音声認識の使用を許可するかどうか？',
            NSRemindersUsageDescription: 'システムリマインダの使用を許可するかどうか？',
            NSSiriUsageDescription: 'Siriへのアクセスを許可するかどうか？',
            NSFaceIDUsageDescription: 'FaceIDの使用を許可するかどうか？',
          },
          infoPlist: {
            // iOS平台自定义InfoPlist.strings
            CustomKey: 'CustomValue',
            // ...
          },
        },
      },
      zh: {
        name: '易云框架', // 应用名称
        description: '易云移动端开发框架', // 应用描述
        android: {
          strings: {
            // Android平台自定义字符串
            CustomKey: 'CustomValue',
            // ...
          },
        },
        ios: {
          privacyDescription: {
            // iOS平台隐私访问描述信息
            NSBluetoothPeripheralUsageDescription: '是否允许使用蓝牙？',
            NSBluetoothAlwaysUsageDescription: '是否允许使用蓝牙？',
            NSPhotoLibraryUsageDescription: '是否允许读取相册？',
            NSPhotoLibraryAddUsageDescription: '是否允许写入相册？',
            NSCameraUsageDescription: '是否允许使用摄像头？',
            NSMicrophoneUsageDescription: '是否允许使用麦克风？',
            NSLocationWhenInUseUsageDescription: '是否允许访问位置？',
            NSLocationAlwaysUsageDescription: '是否允许访问位置？',
            NSLocationAlwaysAndWhenInUseUsageDescription: '是否允许访问位置？',
            NSAppleMusicUsageDescription: '是否允许使用媒体资料库？',
            NFCReaderUsageDescription: '是否允许使用NFC？',
            NSLocalNetworkUsageDescription: '是否允许访问本地网络？',
            NSCalendarsUsageDescription: '是否允许访问日历创建和管理日程事件？',
            NSContactsUsageDescription: '是否允许使用通讯录？',
            NSSpeechRecognitionUsageDescription: '是否允许使用系统语音识别？',
            NSRemindersUsageDescription: '是否允许使用系统提醒事项？',
            NSSiriUsageDescription: '是否允许访问 Siri？',
            NSFaceIDUsageDescription: '是否允许使用 FaceID？',
          },
          infoPlist: {
            // iOS平台自定义InfoPlist.strings
            CustomKey: 'CustomValue',
            // ...
          },
        },
      },
      'zh-TW': {
        name: '易雲框架', // 应用名称
        description: '易雲移動端開發框架', // 应用描述
        android: {
          strings: {
            // Android平台自定义字符串
            CustomKey: 'CustomValue',
            // ...
          },
        },
        ios: {
          privacyDescription: {
            // iOS平台隐私访问描述信息
            NSBluetoothPeripheralUsageDescription: '是否允許使用藍牙？',
            NSBluetoothAlwaysUsageDescription: '是否允許使用藍牙？',
            NSPhotoLibraryUsageDescription: '是否允許讀取相册？',
            NSPhotoLibraryAddUsageDescription: '是否允許寫入相册？',
            NSCameraUsageDescription: '是否允許使用監視器？',
            NSMicrophoneUsageDescription: '是否允許使用麥克風？',
            NSLocationWhenInUseUsageDescription: '是否允許訪問位置？',
            NSLocationAlwaysUsageDescription: '是否允許訪問位置？',
            NSLocationAlwaysAndWhenInUseUsageDescription: '是否允許訪問位置？',
            NSAppleMusicUsageDescription: '是否允許使用媒體資料庫？',
            NFCReaderUsageDescription: '是否允許使用NFC？',
            NSLocalNetworkUsageDescription: '是否允許訪問本地網絡？',
            NSCalendarsUsageDescription: '是否允許訪問行事曆創建和管理日程事件？',
            NSContactsUsageDescription: '是否允許使用通訊錄？',
            NSSpeechRecognitionUsageDescription: '是否允許使用系統語音辨識？',
            NSRemindersUsageDescription: '是否允許使用系統提醒事項？',
            NSSiriUsageDescription: '是否允許訪問Siri？',
            NSFaceIDUsageDescription: '是否允許使用FaceID？',
          },
          infoPlist: {
            // iOS平台自定义InfoPlist.strings
            CustomKey: 'CustomValue',
            // ...
          },
        },
      },
    },
    darkmode: true, // 暗黑模式
    themeLocation: 'theme.json', // 如果 theme.json 在根目录可省略
    /** iOS平台的安全区域 */
    safearea: {
      background: '#ffffff',
      backgroundDark: '#2f0508', // HX 3.1.19+支持
      bottom: {
        // 将 "offset" 置为 “none” 关闭安全区域的占位，注：关闭安全区域占位在刘海屏页面内容可能会被 “homeBar” 挡住，需要自行适配，具体请参考文档 iOS 刘海屏适配
        // https://ask.dcloud.net.cn/article/35564
        offset: 'none',
      },
    },
    styleIsolation: 'shared',
  },
  /* 快应用特有相关 */
  quickapp: {},
  /* 小程序特有相关 */
  'mp-weixin': {
    appid: VITE_WX_APPID,
    setting: {
      urlCheck: false,
    },
    usingComponents: true,
    slotMultipleInstance: true,
    // __usePrivacyCheck__: true,
    darkmode: true, // 暗黑模式
    themeLocation: 'theme.json', // 如果 theme.json 在根目录可省略
    styleIsolation: 'shared',
  },
  'mp-alipay': {
    usingComponents: true,
    darkmode: true, // 暗黑模式
    themeLocation: 'theme.json', // 如果 theme.json 在根目录可省略
    styleIsolation: 'shared',
  },
  'mp-baidu': {
    usingComponents: true,
    darkmode: true, // 暗黑模式
    themeLocation: 'theme.json', // 如果 theme.json 在根目录可省略
    styleIsolation: 'shared',
  },
  'mp-toutiao': {
    usingComponents: true,
    darkmode: true, // 暗黑模式
    themeLocation: 'theme.json', // 如果 theme.json 在根目录可省略
    styleIsolation: 'shared',
  },
  uniStatistics: {
    enable: false,
  },
  vueVersion: '3',
});
